import java.sql.*;
import java.util.*;
public class M_Prestamo {

private SQLHandler SQL;  
 
int prestamo_codigo;
int mul_codigo;
int prestatario_codigo;
int pre_duracion;
String dev_situacion;  
String fecha_prestamo;
String fecha_devolucion;
int volumen_codigo;
int prestamo_renovaciones;
String prestamo_estado;
Calendar pre_fecha;
Calendar dev_fecha;


int numeroPrestamosEnCurso;
Object listaPrestamosEnCurso[][];

int numeroPrestamosTerminados;
Object listaPrestamosTerminados[][];

int numeroPrestamosRenovados;
Object listaPrestamosRenovados[][];

int numeroPrestamosAtrasados;
Object listaPrestamosAtrasados[][];


	public M_Prestamo(){
	SQL = new SQLHandler(); 

	
	
}

//ESTADOS DEL PRESTAMO
//PRESTAMO EN CURSO
//TERMINADO
//EN CURSO RENOVADO
//DEVOLUCION ATRASADA
//NUNCA REGRESADO
	public void prestarMaterial(int pre_cod,int vol_cod, int duracion){
	pre_fecha = Calendar.getInstance();
	String fecha= Integer.toString(pre_fecha.get(pre_fecha.YEAR))+"-"+Integer.toString(pre_fecha.get(pre_fecha.MONTH)+1)+"-"+Integer.toString(pre_fecha.get(pre_fecha.DAY_OF_MONTH));
	
	try{
	   
	   	SQL.insertUpdate("insert into prestamo(PRESTATARIO_COD, PRESTAMO_FECHA, PRESTAMO_DURACION, VOLUMEN_CODIGO, PRESTAMO_ESTADO) values ("+pre_cod+",\""+fecha+"\","+duracion+","+vol_cod+",\"PRESTAMO EN CURSO\");");
	    
	    
	}catch(Exception e){System.out.println(e.getMessage());}
	} 

	public static void main(String asd[]){
		M_Prestamo e= new M_Prestamo();
	}

	public void getPrestamosEnCurso(){
			listaPrestamosEnCurso= new Object[500][9];
		try{
		
		ResultSet res=SQL.select("select * from prestamo where prestamo_estado=\"PRESTAMO EN CURSO\" " );	
		
		while(res.next())
	    {
					listaPrestamosEnCurso[numeroPrestamosEnCurso][0]=res.getInt("PRESTAMO_COD");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][1]=res.getInt("MULTA_CODIGO");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][2]=res.getInt("PRESTATARIO_COD");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][3]=res.getString("PRESTAMO_FECHA");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][4]=res.getInt("PRESTAMO_DURACION");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][5]=res.getString("DEVOLUCION_FECHA");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][6]=res.getString("DEVOLUCION_SITUACION");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][7]=res.getInt("VOLUMEN_CODIGO");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][8]=res.getString("PRESTAMO_ESTADO");
	            	numeroPrestamosEnCurso++;
	               
	   }
		}catch(Exception e){System.out.println(e.getMessage());}	
	}


//esta consulta cruzada no cumple con las reglas del modelo MVC. Esto es hecho a proposito con el fin de ahorrar recursos.	
	public void getPrestamos(){
		listaPrestamosEnCurso= new Object[500][11];
		numeroPrestamosEnCurso=0;
		
		numeroPrestamosTerminados=0;
		listaPrestamosTerminados= new Object[500][13];
		
		numeroPrestamosRenovados=0;
		listaPrestamosRenovados= new Object[500][11];
		
		numeroPrestamosAtrasados=0;
		listaPrestamosAtrasados= new Object[500][13];
		
		
		try{
		
		ResultSet res=SQL.select("select prestamo.PRESTAMO_COD, volumen.volumen_codigo, prestamo.PRESTAMO_FECHA, prestamo.PRESTAMO_ESTADO, prestamo.PRESTAMO_DURACION, prestamo.devolucion_fecha, prestamo.DEVOLUCION_SITUACION, prestatario.prestatario_nombres, prestatario.prestatario_apellidos, prestatario.prestatario_rut, material.material_nombre, material.material_titulo, material.material_autor, volumen.material_codigo from prestamo, prestatario, material, volumen where prestamo.prestatario_cod=prestatario.prestatario_cod and prestamo.volumen_codigo=volumen.volumen_codigo and volumen.material_codigo=material.material_codigo and prestamo_estado=\"PRESTAMO EN CURSO\" " );	
		
		ResultSet res2=SQL.select("select prestamo.PRESTAMO_COD, volumen.volumen_codigo, prestamo.PRESTAMO_ESTADO, prestamo.PRESTAMO_FECHA, prestamo.PRESTAMO_DURACION, prestamo.devolucion_fecha, prestamo.DEVOLUCION_SITUACION, prestatario.prestatario_nombres, prestatario.prestatario_apellidos, prestatario.prestatario_rut, material.material_nombre, material.material_titulo, material.material_autor, volumen.material_codigo from prestamo, prestatario, material, volumen where prestamo.prestatario_cod=prestatario.prestatario_cod and prestamo.volumen_codigo=volumen.volumen_codigo and volumen.material_codigo=material.material_codigo and prestamo_estado=\"TERMINADO\" " );	
		
		ResultSet res3=SQL.select("select prestamo.PRESTAMO_COD, volumen.volumen_codigo, prestamo.PRESTAMO_ESTADO, prestamo.PRESTAMO_FECHA, prestamo.PRESTAMO_DURACION, prestamo.devolucion_fecha, prestamo.DEVOLUCION_SITUACION, prestatario.prestatario_nombres, prestatario.prestatario_apellidos, prestatario.prestatario_rut, material.material_nombre, material.material_titulo, material.material_autor, volumen.material_codigo from prestamo, prestatario, material, volumen where prestamo.prestatario_cod=prestatario.prestatario_cod and prestamo.volumen_codigo=volumen.volumen_codigo and volumen.material_codigo=material.material_codigo and prestamo_estado=\"DEVOLUCION ATRASADA\" " );	
		
		ResultSet res4=SQL.select("select prestamo.PRESTAMO_COD, volumen.volumen_codigo, prestamo.PRESTAMO_ESTADO, prestamo.PRESTAMO_FECHA, prestamo.PRESTAMO_DURACION, prestamo.devolucion_fecha, prestamo.DEVOLUCION_SITUACION, prestatario.prestatario_nombres, prestatario.prestatario_apellidos, prestatario.prestatario_rut, material.material_nombre, material.material_titulo, material.material_autor, volumen.material_codigo from prestamo, prestatario, material, volumen where prestamo.prestatario_cod=prestatario.prestatario_cod and prestamo.volumen_codigo=volumen.volumen_codigo and volumen.material_codigo=material.material_codigo and prestamo_estado=\"EN CURSO RENOVADO\" " );	
	
		
		while(res.next())
	    {
					listaPrestamosEnCurso[numeroPrestamosEnCurso][0]=res.getInt("PRESTAMO_COD");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][1]=res.getString("PRESTAMO_FECHA");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][2]=res.getInt("PRESTAMO_DURACION");
	               	listaPrestamosEnCurso[numeroPrestamosEnCurso][3]=res.getString("prestatario_nombres");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][4]=res.getString("prestatario_apellidos");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][5]=res.getString("prestatario_rut");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][6]=res.getString("material_nombre");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][7]=res.getString("material_titulo");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][8]=res.getString("material_autor");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][9]=res.getString("material_codigo");
	            	listaPrestamosEnCurso[numeroPrestamosEnCurso][10]=res.getString("volumen_codigo");
	            	numeroPrestamosEnCurso++;
	             
	   }
	   
	   	while(res2.next())
	    {
					listaPrestamosTerminados[numeroPrestamosTerminados][0]=res2.getInt("PRESTAMO_COD");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][1]=res2.getString("PRESTAMO_FECHA");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][2]=res2.getInt("PRESTAMO_DURACION");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][3]=res2.getString("devolucion_fecha");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][4]=res2.getString("DEVOLUCION_SITUACION");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][5]=res2.getString("prestatario_nombres");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][6]=res2.getString("prestatario_apellidos");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][7]=res2.getString("prestatario_rut");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][8]=res2.getString("material_nombre");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][9]=res2.getString("material_titulo");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][10]=res2.getString("material_autor");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][11]=res2.getString("material_codigo");
	            	listaPrestamosTerminados[numeroPrestamosTerminados][12]=res2.getString("volumen_codigo");
	            	numeroPrestamosTerminados++;
	             
	   }
	   
	   	while(res3.next())
	    {
					listaPrestamosAtrasados[numeroPrestamosAtrasados][0]=res3.getInt("PRESTAMO_COD");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][1]=res3.getString("PRESTAMO_FECHA");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][2]=res3.getInt("PRESTAMO_DURACION");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][3]=res3.getString("devolucion_fecha");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][4]=res3.getString("DEVOLUCION_SITUACION");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][5]=res3.getString("prestatario_nombres");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][6]=res3.getString("prestatario_apellidos");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][7]=res3.getString("prestatario_rut");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][8]=res3.getString("material_nombre");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][9]=res3.getString("material_titulo");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][10]=res3.getString("material_autor");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][11]=res3.getString("material_codigo");
	            	listaPrestamosAtrasados[numeroPrestamosAtrasados][12]=res3.getString("volumen_codigo");
	            	numeroPrestamosAtrasados++;
	             
	   }
	   
	   	while(res4.next())
	    {
					listaPrestamosRenovados[numeroPrestamosRenovados][0]=res4.getInt("PRESTAMO_COD");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][1]=res4.getString("PRESTAMO_FECHA");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][2]=res4.getInt("PRESTAMO_DURACION");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][3]=res4.getString("prestatario_nombres");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][4]=res4.getString("prestatario_apellidos");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][5]=res4.getString("prestatario_rut");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][6]=res4.getString("material_nombre");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][7]=res4.getString("material_titulo");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][8]=res4.getString("material_autor");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][9]=res4.getString("material_codigo");
	            	listaPrestamosRenovados[numeroPrestamosRenovados][10]=res4.getString("volumen_codigo");
	            	numeroPrestamosRenovados++;
	             
	   }
	   
		}catch(Exception e){System.out.println(e.getMessage());}
		
		
	}
	public void setIdMulta(int idMulta, int prestamo_cod){
		try{
			SQL.insertUpdate("update prestamo set multa_codigo="+idMulta+" where prestamo_cod="+prestamo_cod+" ");
		}catch(Exception e){System.out.println("ERROR SETIDMULTA"+ e.getMessage());}
	}
	
	
	public void getPrestamo(int volCod){
		try{
			ResultSet res=SQL.select("select * from prestamo where volumen_codigo="+volCod+" and prestamo_estado=\"PRESTAMO EN CURSO\" ");
			System.out.println("llege");
				while(res.next())
	    {
					prestamo_codigo=res.getInt("PRESTAMO_COD");
	            	mul_codigo=res.getInt("MULTA_CODIGO");
	            	prestatario_codigo=res.getInt("PRESTATARIO_COD");
	            	System.out.println("llege");
	            	fecha_prestamo=res.getString("PRESTAMO_FECHA");
	            	System.out.println("llege");
	            	pre_duracion=res.getInt("PRESTAMO_DURACION");
	            	//fecha_devolucion=res.getString("DEVOLUCION_FECHA");
	            	dev_situacion=res.getString("DEVOLUCION_SITUACION");
	            	volumen_codigo=res.getInt("VOLUMEN_CODIGO");
	            	prestamo_estado=res.getString("PRESTAMO_ESTADO");
				//	prestamo_renovaciones=res.getInt("PRESTAMO_RENOVACIONES");	            
	               
	   }
		}catch(Exception e){System.out.println("ERROR getPrestamo "+ e.getMessage());}
		
	}
	
	//no usar antes de getPrestamo
	public void actualizarEstados(String fechaDevolucion, String situacionDevolucion, String situacionPrestamo ){
		try{
			SQL.insertUpdate("update prestamo set devolucion_fecha=\""+fechaDevolucion+"\", devolucion_situacion=\""+situacionDevolucion+"\", prestamo_estado=\""+situacionPrestamo+"\" where prestamo_cod="+prestamo_codigo+" ");
		}catch(Exception e){System.out.println("ERROR SETIDMULTA"+ e.getMessage());}
	}
	public void actualizarFecha(String fecha, int prestamo_codigo ){
		try{
			SQL.insertUpdate("update prestamo set prestamo_fecha=\""+fecha+"\" where prestamo_cod="+prestamo_codigo+" ");
		}catch(Exception e){System.out.println("ERROR SETIDMULTA"+ e.getMessage());}
	}
	
}


